Repository navigation
Conversation
A passkey sign-in (WorkOS requires user verification) skips the plugin's code step, as WorkOS's own MFA does. So does an SSO sign-in, unless the new 'SSO and Two-Step Verification' setting is turned off (mfa_trust_sso, on by default). The method comes from WorkOS's authenticate response (authentication_method). Filters workos_mfa_trust_sso and workos_mfa_satisfied_by_sign_in, action workos_mfa_step_skipped, Activity Log event mfa.step_skipped. The profile's Passkey method did nothing. It now shows a 'Sign in with a passkey' button that opens WorkOS's hosted sign-in page, where WorkOS runs passkeys. The unsupported WebAuthn MFA factor leaves the editor.
bordoni
added this pull request to stack #87
October 19, 2026 02:14
bordoni
marked this pull request as ready for review
October 19, 2026 05:28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Passkey and SSO sign-ins count as MFA, and the profile's Passkey method finally does something. Stacked on #91. Part of #28.
Passkey and SSO sign-ins skip the code step
WorkOS's authenticate response says how the user signed in (
authentication_method). The server reads it from WorkOS itself, so the browser can't set it.Mfa\Policy::satisfied_by_sign_in()decides which methods already include a second factor:PasskeySSOmfa_trust_sso)enforce: alwaysprofile accepts a passkey sign-in, and a required user with no authenticator isn't sent to enroll after one.mfa.step_skippedand firesworkos_mfa_step_skipped.workos_mfa_trust_ssoandworkos_mfa_satisfied_by_sign_in, for example to ask one organization's SSO users for a code anyway.Passkey button
The Login Profile editor offered a Passkey method that nothing implemented. WorkOS runs passkeys only on its hosted sign-in page and has no API for them. A profile with Passkey now shows Sign in with a passkey, which sends the visitor to the hosted page (
/auth/oauth/authorize-url?provider=passkeybuilds aprovider=authkitURL). The callback finishes like any other sign-in.To set it up, turn on Passkeys in the WorkOS dashboard; in production, set up an AuthKit custom domain first. The hosted page offers every method turned on in WorkOS, and a password sign-in there still gets the plugin's code step.
The editor's "WebAuthn / passkey" MFA factor is gone, since WorkOS's MFA API has no such factor.
Tests
tscand the build pass.